<?php

namespace Api\Pay;

/**
 * Class Withdraw
 * @package Api\Pay
 * @description 代付服务
 */
class Withdraw extends Base {

    const URI_WITHDRAW_SINGLE = "/withdraw/single";  //代付-单笔
    /**
     * 证件类型
     */
    const CERT_TYPE_ID_CARD = "01";  //身份证

    /**
     * 代付-单笔
     *
     * @param string $appkey 应用appkey
     * @param string $inner_mer_id 内部商户号
     * @param string $buz_id 业务订单号
     * @param string $request_time 请求时间, 1970至今秒数
     * @param int $amt 订单金额, 单位: 人民币-分
     * @param string $card_no 代收卡号
     * @param string $cert_type default 01 证件类型 01-身份证，对私代付必需
     * @param string $cert_no default null 证件号码，对私代付必需
     * @param string $name 账户姓名
     * @param string $callback_url default null 业务交易结果异步通知url
     * @param array $options default array() 代付选项参数
     *                                       purpose       string M 代付目的备注
     *                                       acct_type     string O 账户类型 0-对私 1-对公，默认0
     *                                       bank_id       string O 银行代码，对公代付(acct_type=1)必需
     *                                       province_id   string O 收款人开户行所在省份代码，对公代付(acct_type=1)必需，对私代付默认: 110000-北京
     *                                       union_bank_id string O 收款行行号，大额通道贷记必需，通过联行号查询获得
     *
     * @return bool true-代收请求成功 false-代收请求失败
     */
    public function single($appkey, $inner_mer_id, $buz_id, $request_time, $amt,
                           $card_no, $cert_type = self::CERT_TYPE_ID_CARD, $cert_no, $name,
                           $callback_url = null, array $options = array()) {
        $params = array(
            "mer_id" => $inner_mer_id,
            "buz_id" => $buz_id,
            "request_time" => $request_time,
            "card_no" => $card_no,
            "cert_type" => $cert_type,
            "cert_no" => $cert_no,
            "name" => $name,
            "amt" => $amt,
            "callback_url" => $callback_url,
            "options" => json_encode($options),
        );

        $resp_data = $this->request($appkey, self::URI_WITHDRAW_SINGLE, $params);

        return ($resp_data && $resp_data["result"]);
    }

} 